package com.rzcode.coinex.kernel.dao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 促销卡订单实体类，记录用户领取促销卡的信息。
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "promotion_card_order")
public class PromotionCardOrder {

    /**
     * 订单ID，主键。
     */
    @ApiModelProperty(value = "订单ID")
    private Long id;

    /**
     * 记录对应的卡，与PromotionCard实体关联。
     */
    @ApiModelProperty(value = "记录对应的卡")
    private PromotionCard card;

    /**
     * 领取人ID，通常是用户ID。
     */
    @ApiModelProperty(value = "领取人ID")
    private Long memberId;

    /**
     * 是否免费领取标志，0表示付费领取，1表示免费领取。
     */
    @ApiModelProperty(value = "是否免费领取，0：不是，1：是")
    private int isFree = 0;

    /**
     * 是否锁定标志，0表示未锁定，1表示锁定。
     * 锁定的卡券在领取后将暂时不可使用，直到解锁。
     */
    @ApiModelProperty(value = "是否锁定，0：未锁定，1：锁定")
    private int isLock = 0;

    /**
     * 自领卡时，冻结天数，锁定卡券的冻结期限。
     */
    @ApiModelProperty(value = "自领卡时，冻结天数")
    private int lockDays = 0;

    /**
     * 领取状态，指示卡券的当前状态。
     * 0：未知，
     * 1：已领取未到账（冻结状态），
     * 2：已领取且解冻（已到账），
     * 3：无效。
     */
    @ApiModelProperty(value = "领取状态，0：未知，1：已领取未到账，2：已领取且解冻，3：无效")
    private int state = 0;

    /**
     * 兑换金额，用户领取卡券时支付或抵扣的金额。
     */
    @ApiModelProperty(value = "兑换金额")
    private BigDecimal amount = BigDecimal.ZERO;

    /**
     * 创建时间，订单创建的日期和时间。
     */
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;
}
